二、八、十、十六进制转换(图解篇)

二进制 → 十进制 方法: 二进制数从低位到高位(即从右往左)计算, 第0位的权值是2的0次方,第1位的权值是2的1次方,第2位的权值是2的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。 例:将二进制的(101011)B转换为十进制的步骤如下: 1. 第0位 1 x 2^0 = 1; 2. 第1位 1 x 2^1 = 2; 3. 第2位 0 x 2^2 = 0; 4. 第3位 1 x 2^3 = 8; 5. 第4位 0 x 2^4 = 0; 6. 第5位 1 x 2^5 = 32; 7. 读数,把结果值相加,1+2+0+8+0+32=43,即(101011)B=(43)D。 八进制 → 十进制 方法: 八进制数从低位到高位(即从右往左)计算,第0位的权值是8的0次方,第1位的权值是8的1次方,第2位的权值是8的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。 八进制就是逢8进1,八进制数采用 0~7这八数来表达一个数。 例:将八进制的(53)O转换为十进制的步骤如下: 1. 第0位 3 x 8^0 = 3; 2. 第1位 5 x 8^1 = 40; 3. 读数,把结果值相加,3+40=43,即(53)O=(43)D。 十六进制 → 十进制 方法: 十六进制数从低位到高位(即从右往左)计算,第0位的权值是16的0次方,第1位的权值是16的1次方,第2位的权值是16的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。 十六进制就是逢16进1,十六进制的16个数为0123456789ABCDEF。 例:将十六进制的(2B)H转换为十进制的步骤如下: 1. 第0位 B x 16^0 = 11; 2. 第1位 2 x 16^1 = 32; 3. 读数,把结果值相加,11+32=43,即(2B)H=(43)D。 十进制 → 二进制 方法: 除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。   例:将十进制的(43)D转换为二进制的步骤如下: 1. 将商43除以2,商21余数为1; 2. 将商21除以2,商10余数为1; 3. 将商10除以2,商5余数为0; 4. 将商5除以2,商2余数为1; 5. 将商2除以2,商1余数为0;  6. 将商1除以2,商0余数为1;  7. 读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,101011,即(43)D=(101011)B。 (Figure4:图解十进制 → 二进制) 十进制 → 八进制 方法1:除8取余法,即每次将整数部分除以8,余数为该位权上的数,而商继续除以8,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数起,一直到最前面的一个余数。 例:将十进制的(796)D转换为八进制的步骤如下: 1. 将商796除以8,商99余数为4; 2. 将商99除以8,商12余数为3; 3. 将商12除以8,商1余数为4; 4. 将商1除以8,商0余数为1; 5. 读数,因为最后一位是经过多次除以8才得到的,因此它是最高位,读数字从最后的余数向前读,1434,即(796)D=(1434)O。 (Figure5:图解十进制 → 八进制) 方法2:使用间接法,先将十进制转换成二进制,然后将二进制又转换成八进制; (Figure6:图解十进制 → 八进制) 十进制 → 十六进制 方法1:除16取余法,即每次将整数部分除以16,余数为该位权上的数,而商继续除以16,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数起,一直到最前面的一个余数。 例:将十进制的(796)D转换为十六进制的步骤如下: 1. 将商796除以16,商49余数为12,对应十六进制的C; 2. 将商49除以16,商3余数为1; 3. 将商3除以16,商0余数为3; 4. 读数,因为最后一位是经过多次除以16才得到的,因此它是最高位,读数字从最后的余数向前读,31C,即(796)D=(31C)H。 (Figure7:图解十进制 → 十六进制) 方法2:使用间接法,先将十进制转换成二进制,然后将二进制又转换成十六进制; (Figure8:图解十进制 → 十六进制) 二进制 → 八进制 方法: 取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。 如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。 例:将二进制的(11010111.0100111)B转换为八进制的步骤如下: 1. 小数点前111 = 7; 2. 010 = 2; 3. 11补全为011,011 = 3; 4. 小数点后010 = 2; 5. 011 = 3; 6. 1补全为100,100 = 4; 7. 读数,读数从高位到低位,即(11010111.0100111)B=(327.234)O。 (Figure10:图解二进制 → 八进制) 八进制 → 二进制 方法: 取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数,小数点位置照旧。 例:将八进制的(327)O转换为二进制的步骤如下: 1. 3 = 011; 2. 2 = 010; 3. 7 = 111; 4. 读数,读数从高位到低位,011010111,即(327)O=(11010111)B。 (Figure11:图解八进制 → 二进制) 二进制 → 十六进制 方法: 取四合一法,即从二进制的小数点为分界点,向左(向右)每四位取成一位,接着将这四位二进制按权相加,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的十六进制数。 如果向左(向右)取四位后,取到最高(最低)位时候,如果无法凑足四位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足四位。 例:将二进制的(11010111)B转换为十六进制的步骤如下: 1. 0111 = 7; 2. 1101 = D; 3. 读数,读数从高位到低位,即(11010111)B=(D7)H。 (Figure12:图解二进制 → 十六进制) 十六进制 → 二进制 方法: 取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。 例:将十六进制的(D7)H转换为二进制的步骤如下: 1. D = 1101; 2. 7 = 0111; 3. 读数,读数从高位到低位,即(D7)H=(11010111)B。 (Figure13:图解十六进制 → 二进制) 八进制 → 十六进制 方法: 将八进制转换为二进制,然后再将二进制转换为十六进制,小数点位置不变。 例:将八进制的(327)O转换为十六进制的步骤如下: 1. 3 = 011; 2. 2 = 010; 3. 7 = 111; 4. 0111 = 7; 5. 1101 = D; 6. 读数,读数从高位到低位,D7,即(327)O=(D7)H。 (Figure15:图解八进制 → 十六进制) 十六进制 → 八进制 方法: 将十六进制转换为二进制,然后再将二进制转换为八进制,小数点位置不变。 例:将十六进制的(D7)H转换为八进制的步骤如下: 1. 7 = 0111; 2. D = 1101; 3. 0111 = 7; 4. 010 = 2; 5. 011 = 3; 6. 读数,读数从高位到低位,327,即(D7)H=(327)O。 (Figure16:图解十六进制 → 八进制)

finding the center of a circle from three points

https://www.quora.com/Given-3-points-in-the-Cartesian-plane-how-can-you-find-the-coordinates-of-the-center-of-the-circle-that-intersects-all-three-points-if-there-exists-such-a-circle don't work!! input 3 coordinates input pt1 x,y -> a1, a2 input pt2 x,y -> b1, b2 input pt3 x,y -> c1, c2 d = (a1 — b1) (b2 — c2) — (b1 — c1) (a2 — b2) u = a1*a1 - b1*b1 + a2*a2 - b2*b2 v = b1*b1 - c1*c1 + b2*b2 - c2*c2 #center coordinates (x, y) x = (u*(b2-c2) - v*(a2-b2))/d y = (v*(a1-b1) - u*(b1-c1))/d

统计学知识

道德经云:道生一,一生二,二生三,三生万物。 学习知识亦是如此,一个概念衍生出两个概念,两个概念演化出更小的子概念,接着衍生出整个知识体系。 笔者结合自己对统计学和概率论知识的理解写了这篇文章,有以下几个目标。 目标一:构建出可以让人理解的知识架构,让读者对这个知识体系一览无余 目标二:尽l量阐述每个知识在数据分析工作中的使用场景及边界条件 目标三:为读者搭建从“理论”到“实践"的桥梁 01 概述 你的“对象” 是谁? 此对象非彼“对象”,我们学习“概率和统计学”目的在于应用到对于“对象”的研究中,笔者将我们要研究的“对象”按照维度分为了两大类。 一维:就是当前摆在我们面前的“一组”,“一批”,哪怕是“一坨”数据。这里我们会用到统计学的知识去研究这类对象。 二维:就是研究某个“事件”,笔者认为事件是依托于“时间轴”存在的,过去是否发生,现在是可能会出现几种情况,每种情况未来发生的可能性有多大? 这类问题是属于概率论的范畴。 因此,我们在做数据分析的研究前,先弄清我们研究的对象属于哪类范畴,然后在按着这个分支检索自己该用到的知识或方法来解决问题。 分析就像在给 “爱人” 画肖像从外观的角度描述一个姑娘,一般是面容怎么样?身段怎么样? 两个维度去描述。 就像画一幅肖像画,我们的研究“对象”在描述性分析中也是通过两个维度去来描述即,“集中趋势---代表值”,“分散和程度”。 看到这几个概念是不是就很熟悉了? 笔者认为一个描述性的分析就是从这两个维度来说清楚你要研究的对象是什么样子? 至于从哪些特征开始说呢? 就是常用的概念“均值”,“方差”之类的。 下面我们进入正题,笔者将详细阐述整个知识架构。 02 对数据的描述性分析 数据分析中最常规的情况,比如你手上有一组,一批或者一坨数据,数据分析的过程就是通过“描述”从这些数据中获取的信息,通常可以从两个维度去描述: 1. 集中趋势量度:为这批数据找到它们的“代表”均值(μ) 均值的局限性均值是最常用的平均数之一,但是它的局限性在于“若用均值描述的数据中存在异常值的情况,会产生偏差” ; 例如下面一组数据就不太适合用均值来代表这5个人的年龄均值是:31.2岁 很显然,在这组数据中,大部分人的年龄是10几岁的青少年,但是E的年龄是100岁为异常值,用均值来描述他们的年龄是31.2岁,很显然用均值作为描述这组数据是不合适的,那么我们该如何准确的表征这组数据呢??? 中位数中位数,又称中点数,中值。 是按顺序排列的一组数据中居于中间位置的数。 中位数的局限 回到上一个例子,若用中位数来表征这组数据的平均年龄,就变得更加合理,中位数15。 那么我们在看一下下面一组数据,中位数的表现又如何? 中位数:45 这组数据的中位数为:45,但是中位数45并不能代表这组数据。 因为这组数据分为两批,两批的差异很大。 那么如何处理这类数据呢? 接下来介绍第三位平均数。 众数众数是样本观测值在频数分布表中频数最多的那一组的组中值。 平均数可以表征一批数据的典型值,但是仅凭平均数还不能给我们提供足够的信息,平均数无法表征一组数据的分散程度。 2.分散性与变异性的量度(全距,迷你距,四分位数,标准差,标准分) 全距=max-min全距也叫“极差”极差。 它是一组数据中最大值与最小值之差。 可以用于度量数据的分散程度。 全距的局限性全距虽然求解方便快捷,但是它的局限性在于“若数据中存在异常值的情况,会产生偏差。 为了摆脱异常值带来的干扰,比如我们看一下下面的两组数据。 只是增加了一个异常值,两组数据的全距产生了巨大的差异。 四分位数所有观测值从小到大排序后四等分,处于三个分割点位置的数值就是四分位数:Q1,Q2和Q3。 Q1:第一四分位数 (Q1),又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。 Q2:第二四分位数 (Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字。 Q3:第三四分位数 (Q3),又称“较大四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。 迷你距 也叫“四分位距”迷你距。 它是一组数据中较小四分位数与较大四分位数之差。 即:迷你距 = 上四分位数 - 下四分位数 迷你距可以反映中间50%的数据,如果出现了极大或极小的异常值,将会被排除在中心数据50%以外。 因此使用迷你距可以剔除数据中异常值。 全距,四分位距,箱形图可以表征一组数据极大和极小值之间的差值跨度,一定程度上反应了数据的分散程度,但是却无法精准的告诉我们,这些数值具体出现的频率,那么我们该如何表征呢? 我们度量每批数据中数值的“变异”程度时,可以通过观察每个数据与均值的距离来确定,各个数值与均值距离越小,变异性越小数据越集中,距离越大数据约分散,变异性越大。 方差和标准差就是这么一对儿用于表征数据变异程度的概念。 方差方差是度量数据分散性的一种方法,是数值与均值的距离的平方数的平均值。 标准差标准差为方差的开方。 通过方差和标准差我们现在可以表征一组数据的数值的变异程度。 那么对于拥有不同均值和不同标准差的多个数据集我们如何比较呢? 标准分——表征了距离均值的标准差的个数 标准分为我们提供了解决方法,当比较均值和标准差各不相同的数据集时,我们可以把这些数值视为来自同一个标准的数据集,然后进行比较。 标准分将把每一个数据集转化为通用的分布形态,进行比较。 标准分还有个重要的作用,它可以把正态分布变为标准正态分布,后文会有介绍。 第一部分小结 1. 描述一批数据,通过集中趋势分析,找出其“代表值” ; 通过分散和变异性的描述,查看这批数据的分散程度。 2. 集中趋势参数:均值,中位数,众数3. 分散性和变异性参数:全距,四分位距,方差,标准差,标准分 03 关于“事件”的研究分析概率论 1.一个事件的情况 为了让读者更好理解,笔者概率论中最核心的概念以及概念之间彼此的关系绘制成了下图,那么接下来笔者开始“讲故事”了。 事件:有概率可言的一件事情,一个事情可能会发生很多结果,结果和结果之间要完全穷尽,相互独立。 概率:每一种结果发生的可能性。 所有结果的可能性相加等于1,也就是必然!!! 概率分布:我们把事件和事件所对应的概率组织起来,就是这个事件的概率分布。 概率分布可以是图象,也可以是表格。 如下图1和表2都可以算是概率分布 期望:表征了综合考虑事情的各种结果和结果对应的概率后这个事情的综合影响值。 (一个事件的期望,就是代表这个事件的“代表值”,类似于统计里面的均值) 方差:表征了事件不同结果之间的差异或分散程度。 2.细说分布 理想很丰满,现实很骨感。 真实的生活中别说去算一个事件的期望,即使把这个事件的概率分布能够表述完整,每个事件对应的概率值得出来就已经是一件了不起的事情了。 因此,为了能更快更准确的求解出事件的概率分布,当某些事件,满足某些特定的条件,那么我们可以直接根据这些条件,来套用一些固定的公式,来求解这些事件的分布,期望以及方差。 “离散型”数据和“连续性”数据差异在我们展开分布的知识之前,先补充一个预备知识,什么是离散数据,什么是连续数据,它们二者之间有什么差异? 离散数据:一个粒儿,一个粒儿的数据就是离散型数据。 连续数据:一个串儿,一个串儿的数据就是连续型数据。 其实上述描述并没有错误,离散型和连续型数据是一对相对概念,同样的数据既可能是离散型数据,又可能是连续型数据。 判别一个数据是连续还是离散最本质的因素在于,一个数据组中数据总体的量级和数据粒度之间的差异。 差异越大越趋近于连续型数据,差异越小越趋近于离散型数据。 举个例子:人这个单位,对于一个家庭来说,就离散型数据,一个家庭可能有 3个人,4个人,5个人....等等。 对于一个国家来说,就是连续型数据,我们的国家有14亿人口,那么以个人为单位在这个量级的数据群体里就是连续型数据。 清楚了离散型和连续型数据的差异,我们接下来一块科普这几种常用的特殊分布。 离散型分布离散数据的概率分布,就是离散分布。 这三类离散型的分布,在“0-1事件”中可以采用,就是一个事只有成功和失败两种状态。 连续型分布连续型分布本质上就是求连续的一个数据段概率分布。 正态分布 f(x)----是该关于事件X的概率密度函数 μ ---均值 σ^2 ---方差 σ ---标准差 绿色区域的面积 ---该区间段的概率正态分布概率的求法step1 ---确定分布和范围 ,求出均值和方差 step2 ---利用标准分将正态分布转化为标准正态分布 (还记得 第一部分的标准分吗?) step3 ---查表找概率 离散型分布 → 正态分布 (离散分布转化为正态分布)精彩的地方在这里,笔者已经阐述了连续型数据和离散型数据是一对相对的概念,那么这就意味着在某种“边界”条件下,离散型分布和连续型分布之间是可以相互转化的。 进而简化概率分布的计算。 这里笔者不在偷懒直接上皂片了(编公式快吐了!) 3. 多个事件的情况: “概率树”和“贝叶斯定理”多个事件就要探讨事件和事件之间的关系对立事件: 如果一个事件,A’包含所有A不包含的可能性,那么我们称A’和A是互为对立事件 穷尽事件:如何A和B为穷尽事件,那么A和B的并集为1 互斥事件:如何A和B为互斥事件,那么A和B没有任何交集 独立事件:如果A件事的结果不会影响B事件结果的概率分布那么A和B互为独立事件。 例子:10个球,我随机抽一个,放回去还是10个球,第二次随机抽,还是10选1,那么第一次和第二次抽球的事件就是独立的。 相关事件:如果A件事的结果会影响B事件结果的概率分布那么A和B互为独立事件。 例子:10个球,我随机抽一个,不放回去还是10个球,第二次随机抽是9选1,那么第一次和第二次抽球的事件就是相关的。 条件概率(条件概率,概率树,贝叶斯公式) 条件概率代表:已知B事件发生的条件下,A事件发生的概率 概率树 --- 一种描述条件概率的图形工具。 假设有个甜品店,顾客买甜甜圈的概率是3/4 ; 不买甜甜圈直接买咖啡的概率是1/3 ; 同时买咖啡和甜甜圈概率是9/20。 从图中我们可以发现以下两个信息: 1. 顾客买不买甜甜圈可以影响喝不喝咖啡的概率,所以事件甜甜圈与事件咖啡是一组相关事件 2. 概率树每个层级分支的概率和都是1 贝叶斯公式 ----提供了一种计算逆条件概率的方法贝叶斯公式用于以下场景,当我们知道A发生的前提下B发生的概率,我们可以用贝叶斯公式来推算出B发生条件下A发生的概率。 第二部分小结 1. 事件,概率,概率分布之间的关系 2. 期望,方差的意义 3. 连续型数据和离散型数据之间的区别和联系 4. 几何分布,二项分布,泊松分布,正态分布,标准正态分布 5. 离散分布和正态分布可以转化6. 多个事件之间的关系,相关事件和独立事件,条件概率和贝叶斯公式 04 关于“小样本” 预测“大总体” 现实生活中,总体的数量如果过于庞大我们无法获取总体中每个数据的数值,进行对总体的特征提取进而完成分析工作。 那么接下来就用到了本章节的知识。 1.抽取样本 总体:你研究的所有事件的集合 样本:总体中选取相对较小的集合,用于做出关于总体本身的结论 偏倚:样本不能代表目标总体,说明该样本存在偏倚 简单随机抽样:随机抽取单位形成样本。 分成抽样:总体分成几组或者几层,对每一层执行简单随机抽样 系统抽样:选取一个参数K,每到第K个抽样单位,抽样一次。 2.预测总体(点估计预测,区间估计预测)点估计量--- 一个总参数的点估计量就是可用于估计总体参数数值的某个函数或算式。 场景1:样本无偏的情况下,已知样本,预测总体的均值,方差。 (1) 样本的均值 = 总体的估算均值(总体均值的点估计量) ≈ 总体实际均值(误差是否可接受) (2)总体方差 估计总体方差 场景2:已知总体,研究抽取样本的概率分布比例抽样分布: 考虑从同一个总体中取得所有大小为n的可能样本,由这些样本的比例形成一个分布,这就是“比例抽样分布”。 样本的比例就是随机变量。 举个栗子:已知所有的糖球(总体)中红色糖球比例为0.25。 从总体中随机抽n个糖球,我们可以求用比例抽样分布求出这n个糖球中对应红球各种可能比例的概率。 样本均值分布: 考虑同一个总体中所有大小为n的可能样本,然后用这个样本的均值形成分布,该分布就是“样本均值分布” ,样本的均值就是随机变量。 中心极限定理: 如果从一个非正态总体X中抽出一个样本,且样本极大(至少大于30),则图片.png的分布近似正态分布。 区间估计量--- 点估计量是利用一个样本对总体进行估计,区间估计是利用样本组成的一段区间对样本进行估计。 举个栗子:今天下午3点下雨;今天下午3点到4点下雨。 如果我们的目的是为了尽可能预测正确,你会使用那句话术? 如何求置信区间? (这里笔者讲一下思路,不画图码公式了,读者有兴趣可以查阅一下教材) 求置信区间简便公式(直接上皂片) 关于C值参数: 置信水平 90% C=1.64 , 95% C=1.96 , 99% C=2.58 待补充知识一(t分布)我们之前的区间预测有个前提,就是利用了中心极限定理,当样本量足够大的时候(通常大于30),均值抽样分布近似于正态分布。 若样本量不够大呢? 这是同样的思路,只是样本均值分布将近似于另一种分布处理更加准确,那就是t分布。 这里笔者直接放张图,不做拓展了。 待补充知识二(卡方分布)----注意待补充不代表不重要,是笔者水平有限,目前还不能用简单的语言概述其中的精髓。 卡方分布的定义 若n个相互独立的随机变量ξ、ξ、……、ξn ,均服从标准正态分布,则这n个服从标准正态分布的随机变量的平方和构成一新的随机变量,其分布规律称为卡方分布。 卡方分布的应用场景 用途1:用于检验拟合优度。 也就是检验一组给定的数据与指定分布的吻合程度; 用途2:检验两个变量的独立性。 通过卡方分布可以检查变量之间是否存在某种关联: 3.验证结果(假设检验) 假设检验是一种方法用于验证结果是否真实可靠。具体操作分为六个步骤。 两类错误---即使我们进行了“假设检验”依然无法保证决策是百分百正确的,会出现两类错误 第一类错误:拒绝了一个正确的假设,错杀了一个好人 第二类错误:接收了一个错误的假设,放过了一个坏人 第三部分小结: 1. 无偏抽样 2. 点估计量预测(已知样本预测总体,已知总体预测样本) 3. 区间估计量预测(求置信区间) 4. 假设检验 05 相关与回归(y=ax+b) 这里介绍的相关和回归是关于二维双变量的最简单最实用的线性回归,非线性回归这里不暂不做拓展。 散点图:显示出二变量数据的模式 相关性:变量之间的数学关系。 线性相关性:两个变量之间呈现的直线相关关系。 最佳拟合直线:与数据点拟合程度最高的线。 (即每个因变量的值与实际值的误差平方和最小) 误差平方和SSE: 线性回归法: 求最佳拟合直线的方法(y=ax+b),就是求参数a和b斜率a公式: b公式: 相关系数r:表征描述的数据与最佳拟合线偏离的距离。 (r=-1完全负相关,r=1完全正相关,r=0不相关)r公式: 结束语笔者这里梳理了统计与概率学最基础的概念知识,尽量阐述清楚这些概念知识之间关联的关系,以及应用的场景。 底层概念是上层应用的基础,当今浮躁的“机器学习”,“神经网络”,“AI自适应”这些高大上的关键字满天飞。 笔者认为踏踏实实的把“基础”打扎实,才是向上发展的唯一途径。

Covariance

In the world of data analysis, understanding the relationship between variables is crucial. One powerful tool for measuring this relationship is the covariance. What is Covariance? Variance is a measurement of the distance between a variable and the average value of a set of data. The population variance formula: Covariance is a statistical measure that quantifies the relationship between two variables. It tells us how changes in one variable are associated with changes in another. Covariance can be positive, indicating a positive relationship, negative, indicating a negative relationship, or zero, indicating no relationship at all. Covariance evaluates how the mean values of two random variables move together. For example, if stock A's return moves higher whenever stock B's return moves higher, and the same relationship is found when each stock's return decreases, these stocks are said to have positive covariance. To calculate covariance, you can use the formula: Cov(X, Y) = Σ(Xi-µ)(Yj-v) / n Cov(X, Y) represents the covariance of variables X and Y. Σ represents the sum of other parts of the formula. (Xi) represents all values of the X-variable. µ represents the average value of the X-variable. Yj represents all values of the Y-variable. v represents the average value of the Y-variable. Σ represents the sum of the values for both (Xi-µ) and (Yj-v). n represents the total number of data points across both variables. Using the cov() Function in R: The cov() function takes one or two vectors as input and returns the covariance matrix or a single covariance value, depending on the input. The syntax of the cov() function is: cov(x, y) Example 1: Calculating Covariance between Two Variables Suppose we have two vectors, x and y, representing the number of hours studied and the corresponding test scores, respectively, for a group of students. We want to measure the covariance between these two variables. x <- c(5, 7, 3, 6, 8) y <- c(65, 80, 50, 70, 90) covariance <- cov(x, y) covariance [1] 29 This example is saying is that for every unit increase in x there is a 29 unit increase in y. Example 2: Calculating Covariance Matrix Now let’s consider a scenario where we have multiple variables, and we want to calculate the covariance matrix to gain insights into their relationships. # Create example vectors x <- c(5, 7, 3, 6, 8) y <- c(65, 80, 50, 70, 90) z <- c(150, 200, 100, 180, 220) # Combine vectors into a matrix data <- cbind(x, y, z) # Calculate covariance matrix cov_matrix <- cov(data) cov_matrix x y z x 3.7 29 90 y 29.0 230 700 z 90.0 700 2200 In this example, we have three variables, x, y, and z, representing hours studied, test scores, and total marks, respectively.

协方差、方差、标准差、协方差矩阵

1. 方差
2. 标准差
3. 协方差 covariance
4. 协方差矩阵 covariance matrix
5. 各指标之间的关系与对比

1. 方差

方差是统计学中用来度量一组数据分散程度的重要指标。 它反映了数据点与其均值之间的偏离程度。 在数据分析和机器学习中,方差常用于描述数据集的变异情况  1.1 定义与计算方法 方差的计算方法如下: 计算数据集的均值(平均值) 计算每个数据点与均值的差值 将这些差值平方 将平方后的差值相加 将总和除以数据点的数量 方差的公式为:  1.2 实际应用 方差在许多领域都有广泛应用。 例如,在金融领域,方差用来衡量投资回报率的波动性。 在质量控制中,方差用来衡量生产过程的稳定性。 在机器学习中,方差用于评估模型的性能和稳定性  1.3 示例 假设我们有一组数据:[1, 2, 3, 4, 5]

2. 标准差

标准差是方差的平方根,是另一种度量数据分散程度的指标。 标准差与方差一样,反映了数据点与均值之间的偏离程度,但标准差的单位与数据本身一致,因此更容易解释和理解  2.1 定义与计算方法 标准差的计算方法如下: 计算数据集的均值(平均值) 计算每个数据点与均值的差值 将这些差值平方 将平方后的差值相加 将总和除以数据点的数量,得到方差 对方差取平方根,得到标准差 标准差的公式为:  2.2 实际应用 标准差广泛应用于各种领域。 例如,在金融领域,标准差用来衡量投资回报率的波动性。 在质量控制中,标准差用来衡量生产过程的稳定性。 在统计分析和数据科学中,标准差用来描述数据集的离散程度  2.3 示例 继续前面的例子,假设我们有一组数据:[1, 2, 3, 4, 5]

3. 协方差 covariance

协方差是用来衡量两个变量之间关系的一种统计指标。 它表示了两个变量如何一起变化:当一个变量变大时,另一个变量是否也变大(正协方差)或变小(负协方差)。 协方差的值可以是正、负或零,具体取决于变量之间的关系  3.1 定义与计算方法 协方差的计算方法如下: 计算每个变量的均值(平均值) 计算每个变量与其均值的差值 将两个变量的差值乘积求和 将和除以数据点的数量 协方差的公式为:  3.2 实际应用 协方差在许多领域都有广泛应用。 例如,在金融领域,协方差用来衡量不同资产回报率之间的相关性。 在经济学中,协方差用来分析不同经济指标之间的关系。 在机器学习中,协方差用于特征选择和数据预处理  3.3 示例 假设我们有两个变量的数据集: X= [ 1, 2, 3, 4, 5] 𝑋= [1,2,3,4,5] 𝑋= [ 1, 2, 3, 4, 5] 和 Y= [ 2, 4, 6, 8, 10] 𝑌= [2,4,6,8,10]

4. 协方差矩阵 covariance matrix

协方差矩阵是用于描述多个变量之间协方差关系的矩阵。 它是一个对称矩阵,其中每个元素表示对应变量对之间的协方差。 协方差矩阵在多变量统计分析和机器学习中起着重要作用 Covariance matrix is a square matrix that displays the variance exhibited by elements of datasets and the covariance between a pair of datasets. Variance is a measure of dispersion and can be defined as the spread of data from the mean of the given dataset. Covariance is calculated between two variables and is used to measure how the two variables vary together. https://www.cuemath.com/algebra/covariance-matrix/  4.1 定义与计算方法 协方差矩阵的计算方法如下: 计算每个变量的均值(平均值) 计算每个变量与其均值的差值 计算每对变量之间的协方差 将协方差填入矩阵对应位置 协方差矩阵的公式为:  4.2 实际应用 协方差矩阵在数据分析和机器学习中有广泛的应用。 例如,在主成分分析(PCA)中,协方差矩阵用于特征降维。 在多变量回归分析中,协方差矩阵用于估计回归系数的标准误。 在组合投资中,协方差矩阵用于分析不同资产的风险  4.3 示例 假设我们有三个变量的数据集:

5. 各指标之间的关系与对比

在数据分析和统计学中,方差、标准差、协方差及协方差矩阵都是衡量数据分布和变量关系的重要工具。 理解它们之间的关系和区别有助于更好地应用这些工具进行分析  5.1 方差与标准差 方差和标准差都是度量数据分散程度的指标,但它们的单位和解释不同  方差:方差表示数据点与均值之间的平方差的平均值,单位是数据单位的平方。 方差公式为:  标准差:标准差是方差的平方根,因此其单位与数据本身一致。 标准差公式为:  5.2 标准差与协方差 标准差和协方差虽然都是度量数据分布和关系的指标,但它们用于不同的情景  标准差:标准差用于度量单个变量的分散程度,是方差的平方根。 它可以帮助我们理解单个变量的波动性  协方差:协方差用于度量两个变量之间的关系,表示一个变量变化时另一个变量的变化情况。 协方差公式为:  5.3 协方差与协方差矩阵 协方差和协方差矩阵都是用来描述变量之间关系的工具,但协方差矩阵可以同时描述多个变量之间的关系  协方差:协方差只描述两个变量之间的关系,正值表示正相关,负值表示负相关  协方差矩阵:协方差矩阵是一个对称矩阵,包含多个变量之间的协方差信息,用于多变量统计分析。 协方差矩阵公式为: Covariance=(RetabcAvgabc)×(RetxyzAvgxyz)Sample Size1where:Retabc=Day’s return for ABC stockAvgabc=ABC’s average return over the periodRetxyz=Day’s return for XYZ stockAvgxyz=XYZ’s average return over the periodSample Size=Number of days sampled\begin{aligned}&\text{Covariance} = \sum \frac{ ( \text{Ret}_{abc} - \text{Avg}_{abc} ) \times ( \text{Ret}_{xyz} - \text{Avg}_{xyz} ) }{ \text{Sample Size} - 1 } \\&\textbf{where:} \\&\text{Ret}_{abc} = \text{Day's return for ABC stock} \\&\text{Avg}_{abc} = \text{ABC's average return over the period} \\&\text{Ret}_{xyz} = \text{Day's return for XYZ stock} \\&\text{Avg}_{xyz} = \text{XYZ's average return over the period} \\&\text{Sample Size} = \text{Number of days sampled} \\\end{aligned}​Covariance=∑Sample Size−1(Retabc​−Avgabc​)×(Retxyz​−Avgxyz​)​where:Retabc​=Day’s return for ABC stockAvgabc​=ABC’s average return over the periodRetxyz​=Day’s return for XYZ stockAvgxyz​=XYZ’s average return over the periodSample Size=Number of days sampled​ MathML mathml quick guide

Covariance: Definition, Formula and Examples



What Is Covariance?
 Key Takeaways
Understanding Covariance
  Formula for Covariance
Types of Covariance
  Positive Covariance
  Negative Covariance
Applications of Covariance
Covariance vs. Variance
Covariance vs. Correlation
Example of Covariance Calculation
What Does a Covariance of 0 Mean?
What Is Covariance vs. Variance?
What Is the Difference Between Covariance and Correlation?
How Is a Covariance Calculated?
The Bottom Line

What Is Covariance?

Covariance is a statistical tool that measures the directional relationship between the returns on two assets. A positive covariance means asset returns move together, while a negative covariance means they move inversely. Covariance is calculated by analyzing at-return surprises (standard deviations from the expected return) or multiplying the correlation between the two random variables by the standard deviation of each variable.

 Key Takeaways

Covariance is a statistical tool used to determine the relationship between the movements of two random variables. When two stocks tend to move together, they are seen as having a positive covariance; when they move inversely, the covariance is negative. Covariance is different from the correlation coefficient, a measure of the strength of a correlative relationship. Covariance is an important tool in modern portfolio theory (MPT) for determining what securities to put in a portfolio. Risk and volatility can be reduced in a portfolio by pairing assets that have a negative covariance.

Understanding Covariance

Covariance evaluates how the mean values of two random variables move together. For example, if stock A’s return moves higher whenever stock B’s return moves higher, and the same relationship is found when each stock’s return decreases, these stocks are said to have positive covariance. In finance, covariances are calculated to help diversify security holdings.

  Formula for Covariance

When an analyst has price information from a selected stock or fund, covariance can be calculated using the following formula: Covariance=(RetabcAvgabc)×(RetxyzAvgxyz)Sample Size1where:Retabc=Day’s return for ABC stockAvgabc=ABC’s average return over the periodRetxyz=Day’s return for XYZ stockAvgxyz=XYZ’s average return over the periodSample Size=Number of days sampled\begin{aligned}&\text{Covariance} = \sum \frac{ ( \text{Ret}_{abc} - \text{Avg}_{abc} ) \times ( \text{Ret}_{xyz} - \text{Avg}_{xyz} ) }{ \text{Sample Size} - 1 } \\&\textbf{where:} \\&\text{Ret}_{abc} = \text{Day's return for ABC stock} \\&\text{Avg}_{abc} = \text{ABC's average return over the period} \\&\text{Ret}_{xyz} = \text{Day's return for XYZ stock} \\&\text{Avg}_{xyz} = \text{XYZ's average return over the period} \\&\text{Sample Size} = \text{Number of days sampled} \\\end{aligned}​Covariance=∑Sample Size−1(Retabc​−Avgabc​)×(Retxyz​−Avgxyz​)​where:Retabc​=Day’s return for ABC stockAvgabc​=ABC’s average return over the periodRetxyz​=Day’s return for XYZ stockAvgxyz​=XYZ’s average return over the periodSample Size=Number of days sampled​

Types of Covariance

The covariance equation is used to determine the direction of the relationship between two variables—in other words, whether they tend to move in the same or opposite directions. A positive or negative covariance value determines this relationship.

  Positive Covariance

A positive covariance between two variables indicates that these variables tend to be higher or lower at the same time. In other words, a positive covariance between stock one and two is where stock one is higher than average at the same points that stock two is higher than average, and vice versa. When charted on a two-dimensional graph, the data points will tend to slope upward.

  Negative Covariance

When the calculated covariance is less than negative, this indicates that the two variables have an inverse relationship. In other words, a stock one value lower than average tends to be paired with a stock two value greater than average, and vice versa.

Applications of Covariance

Covariances have significant applications in finance and modern portfolio theory (MPT). For example, in the capital asset pricing model (CAPM), which is used to calculate the expected return of an asset, the covariance between a security and the market is used in the formula for one of the model’s key variables, beta. In the CAPM, beta measures the volatility, or systematic risk, of a security compared to the market as a whole; it’s a practical measure that draws from the covariance to gauge an investor’s risk exposure specific to one security. Meanwhile, portfolio theory uses covariances to statistically reduce the overall risk of a portfolio by protecting against volatility through covariance-informed diversification. Possessing financial assets with returns that have similar covariances does not provide very much diversification. Therefore, a diversified portfolio would likely contain a mix of financial assets that have varying covariances.

Covariance vs. Variance

Covariance is related to variance, a statistical measure for the spread of points in a data set. Both variance and covariance measure how data points are distributed around a calculated mean. However, variance measures the spread of data along a single axis, while covariance examines the directional relationship between two variables. In a financial context, covariance is used to examine how different investments perform in relation to one another. A positive covariance indicates that two assets tend to perform well at the same time, while a negative covariance indicates that they tend to move in opposite directions. Investors might seek investments with a negative covariance to help them diversify their holdings.

Covariance vs. Correlation

Covariance is also distinct from correlation, another statistical metric often used to measure the relationship between two variables. While covariance measures the direction of a relationship between two variables, correlation measures the strength of that relationship. This is usually expressed through a correlation coefficient, which can range from -1 to +1. While the covariance does measure the directional relationship between two assets, it does not show the strength of the relationship between the two assets; the coefficient of correlation is a more appropriate indicator of this strength. A correlation is considered strong if the correlation coefficient has a value close to +1 (positive correlation) or -1 (negative correlation). A coefficient that is close to zero indicates that there is only a weak relationship between the two variables.

Example of Covariance Calculation

The capital sigma symbol (Σ) signifies the summation of all of the calculations. So, you need to calculate for each day and add the results. For example, to calculate the covariance between two stocks, assume you have the stock prices for a period of four days and use the formula: Covariance=(RetabcAvgabc)×(RetxyzAvgxyz)Sample Size1\begin{aligned}&\text{Covariance} = \sum \frac{ ( \text{Ret}_{abc} - \text{Avg}_{abc} ) \times ( \text{Ret}_{xyz} - \text{Avg}_{xyz} ) }{ \text{Sample Size} - 1 } \\\end{aligned}​Covariance=∑Sample Size−1(Retabc​−Avgabc​)×(Retxyz​−Avgxyz​)​​
DayABCXYZ
11.2%3.1%
21.8%4.2%
32.2%5.0%
41.5%4.2%
You would find the Day 1 average return for ABC (1.675%) and XYZ (4.125%), subtract them from the corresponding term, and multiply them. Do this for each day: Day 1=(1.2%1.675%)×(3.1%4.125%)=0.487\begin{aligned}&\text{Day 1} = (1.2\% - 1.675\%) \times (3.1\% - 4.125\%) = 0.487 \\\end{aligned}​Day 1=(1.2%−1.675%)×(3.1%−4.125%)=0.487​ Day 2=(1.8%1.675%)(4.2%4.125%)=0.009\begin{aligned}&\text{Day 2} = (1.8\% - 1.675\%) * (4.2\% - 4.125\%) = 0.009 \\\end{aligned}​Day 2=(1.8%−1.675%)∗(4.2%−4.125%)=0.009​ Day 3=(2.2%1.675%)(5.0%4.125%)=0.459\begin{aligned}&\text{Day 3} = (2.2\% - 1.675\%) * (5.0\% - 4.125\%) = 0.459 \\\end{aligned}​Day 3=(2.2%−1.675%)∗(5.0%−4.125%)=0.459​ Day 4=(1.5%1.675%)(4.2%4.125%)=0.013\begin{aligned}&\text{Day 4} = (1.5\% - 1.675\%) * (4.2\% - 4.125\%) = -0.013 \\\end{aligned}​Day 4=(1.5%−1.675%)∗(4.2%−4.125%)=−0.013​ Add each day’s result to the previous result: 0.487+0.009+0.4590.013=0.943\begin{aligned}&0.487 + 0.009 + 0.459 - 0.013 = 0.943 \\\end{aligned}​0.487+0.009+0.459−0.013=0.943​
Your sample size is four, so subtract one from four and divide the previous result by it: 0.9433=.314\begin{aligned}&\frac{ 0.943 }{ 3 } = .314 \\\end{aligned}​30.943​=.314​ This sample has a covariance of 0.314, a positive number, suggesting that the two stocks are similar in returns.

What Does a Covariance of 0 Mean?

A covariance of zero indicates that there is no clear directional relationship between the variables being measured. In other words, a high value for one stock is equally likely to be paired with a high or low value for the other.

What Is Covariance vs. Variance?

Covariance and variance are used to measure the distribution of points in a data set. However, variance is typically used in data sets with only one variable and indicates how closely those data points are clustered around the average. Covariance measures the direction of the relationship between two variables. A positive covariance means that both variables tend to be high or low at the same time. A negative covariance means that when one variable is high, the other tends to be low.

What Is the Difference Between Covariance and Correlation?

Covariance measures the direction of a relationship between two variables, while correlation measures the strength of that relationship. Both correlation and covariance are positive when the variables move in the same direction and negative when they move in opposite directions. However, a correlation coefficient must always range from -1 to +1, with extreme values indicating a strong relationship.

How Is a Covariance Calculated?

For a set of data points with two variables, the covariance is measured by taking the difference between each variable and their respective means. These differences are then multiplied and averaged across all of the data points. In mathematical notation, this is expressed as: Covariance = Σ [ ( Returnabc - Averageabc ) * ( Returnxyz - Averagexyz ) ] ÷ [ Sample Size - 1 ]

The Bottom Line

Covariance is an important statistical metric for comparing the relationships between multiple variables. In investing, covariance is used to identify assets that can help diversify a portfolio.

Linear Algebra 线性代数概念


1.向量 (Vector)
2.向量运算(Vector operations)
 向量加法
 标量乘法(Scalar multiplication)
 点积(Dot product)
 向量空间(Vector space)
3.矩阵(matrix)
 线性变换(Linear Transformation)
 逆矩阵(Inverse Matrix)和奇异矩阵(Singular Matrix)
 单位矩阵(Identity matrix)
 对角矩阵(Diagonal Matrix)
 正交矩阵(Orthogonal matrix)
 矩阵乘法(Matrix multiplication)
 迹(Trace)
 行列式 (Determinant)
 秩(Rank)
 特征向量和特征值(Eigenvectors and Eigenvalues)
线性代数(Linear Algebra)不仅是机器学习的基石,更是一门神奇的魔法学科,让我们能够从数据中挖掘出宝藏般的信息!无论是创建新特征还是优化算法,线性代数都是我们解决问题的有力工具。 线性代数在数据表示、降维、优化、特征工程和相似度测量等方面都有广泛应用。 例如,通过矩阵来组织和操作数据,使复杂的数据集得以简洁表示;PCA等降维技术利用线性代数减少变量数量,提高模型效率;梯度下降法通过线性代数找到函数的最小值,驱动机器学习的优化过程。 接下了将探讨一些关键的线性代数概念,并通过可视化解释和代码示例,帮助你更好地理解这些概念在数据科学中的实际应用。

1.向量 (Vector)

向量(Vector) 是线性代数(Linear Algebra)中的最为基本元素,我们可以从三个角度理解向量(Vector): 物理学的角度:向量是指向空间的箭头,由长度和方向定义。 平面上的向量是二维的,我们生活空间中的向量是三维的。 计算机科学的角度:向量是有序的数字列表。 这个列表的长度决定了向量的维度。 数学家的角度:向量可以是任何可以相加和乘以一个数字的对象。 向量表示数据点或特征向量,常用于描述数据样本。 例如下面一个二维空间的一个点,就可以表示一个向量: import numpy as np import matplotlib.pyplot as plt # Define the vector v = np.array([2, 3]) # Create the plot plt.quiver(0, 0, v[0], v[1], angles='xy', scale_units='xy', scale=1, color='r') plt.xlim(-2, 5),plt.ylim(-2, 5),plt.grid() plt.xlabel('x') plt.ylabel('y') plt.title('Vector v=[2,3]') plt.show()

2.向量运算(Vector operations)

 向量加法

向量加法是将两个向量逐元素相加,得到一个新的向量。 下面代码示意两个向量加的展示: import numpy as np import matplotlib.pyplot as plt # 定义两个向量 a = np.array([2, 3]) b = np.array([4, 1]) # 计算向量和 c = a + b plt.figure() plt.quiver(0, 0, a[0], a[1], angles='xy', scale_units='xy', scale=1, color='b', label='Vector:a='+str(a)) plt.quiver(0, 0, b[0], b[1], angles='xy', scale_units='xy', scale=1, color='g', label='Vector:b='+str(b)) plt.quiver(0, 0, c[0], c[1], angles='xy', scale_units='xy', scale=1, color='r', label='Vector:a + b='+str(c)) plt.quiver(a[0], a[1],c[0]-a[0], c[1]-a[1], angles='xy', scale_units='xy', scale=1, color='lightgreen', label='b\'') plt.quiver(b[0], b[1],c[0]-b[0], c[1]-b[1], angles='xy', scale_units='xy', scale=1, color='lightblue', label='a\'') plt.xlim(0, 6),plt.ylim(0, 6) plt.axhline(0, color='black', linewidth=0.5) plt.axvline(0, color='black', linewidth=0.5) plt.grid(True) plt.legend() plt.title('Vector Addition') plt.xlabel('X-axis'),plt.ylabel('Y-axis') plt.show()

 标量乘法(Scalar multiplication)

标量乘法是向量乘以一个标量(即一个数),结果是一个方向与原始向量相同(如果标量为负,则方向相反),但其大小按标量的绝对值进行缩放的向量。 scalar = 3 v = np.array([1, 2]) v_scaled = scalar * v plt.quiver(0, 0, v[0], v[1], angles='xy', scale_units='xy', scale=1, color='r', label='Original') plt.quiver(0, 0, v_scaled[0], v_scaled[1], angles='xy', scale_units='xy', scale=1, color='b', label='Scaled') plt.xlim(-1, 6),plt.ylim(-1, 8) plt.grid() plt.legend() plt.show()

 点积(Dot product)

点积(Dot product)是两个向量的长度乘积与它们之间夹角的余弦值的乘积,反映了向量的长度和它们之间方向关系的特性。 直观地理解,可以将点积理解为一个向量对另一个向量的方向性影响或者说“一个向量对另一个向量施加了多少推力/能量”。 其结果表明我们通过点积对原始向量进行了多大程度的增强(可以是正数、负数或零)。 如果点积为0,这说明向量是正交的。 关于点积的理解可以参考:https://betterexplained.com/articles/vector-calculus-understanding-the-dot-product/ v1 = np.array([1, 2]) v2 = np.array([2, 3]) dot_product = np.dot(v1, v2) print("Dot Product:", dot_product)

 向量空间(Vector space)

Linear Algebra Vector Spaces What is a Vector Space? Vector Spaces 向量空间(或线性空间)是指可以进行向量加法和数乘(称为标量乘法)的任何向量集合。 要称作向量空间 V,必须满足一系列公理。 A vector space consists of a set of vectors and a set of scalars that is closed under vector addition and scalar multiplication. That is, when you multiply any two vectors in a vector space by scalars and add them, the resulting vector is still in the vector space. Examples of vector spaces. Let the scalars be the set of real numbers and let the vectors be column matrices of a specified type. One example of a vector space is the set of all three-by-one column matrices. If we let
then

3.矩阵(matrix)

矩阵(matrix)是线性代数中的重要概念,它以行和列的形式组织数据和运算。 每个矩阵都由数值组成,这些数值排列成若干行和若干列,形成一个二维的表格结构。 矩阵在数学和计算机科学中广泛应用,能够表示和处理各种数据和运算关系。 例如,矩阵可以用于描述线性方程组、表示图像的像素值、执行线性变换和投影,以及实现各种数值计算和数据分析算法。 通过矩阵,我们能够更有效地理解和解决复杂的数学和工程问题,为科学研究和技术应用提供了强大的工具。 这是一个有2行2列的二维矩阵。

 线性变换(Linear Transformation)

线性变换是指在两个向量空间 V → W 之间的映射,它保持向量加法和标量乘法的运算。 在实际应用中,将一个矩阵 A 应用于一个向量 x,得到另一个向量 y(通过运算 Ax = y),就是一个线性变换。 在数据科学中,线性变换被广泛应用于: 降维:PCA 使用线性变换将高维数据映射到低维空间 数据转换:对数据集进行归一化或标准化是一种线性变换 特征工程:通过组合现有特征创建新特征 下面是一个最简单矩阵变换示例: import numpy as np import matplotlib.pyplot as plt # Linear Transformation of a Square T = np.array([[1, 2], [2, 1]]) # Transformation matrix square = np.array([[0, 0, 1, 1, 0], [0, 1, 1, 0, 0]]) # Original square transformed_square = np.dot(T, square) # Apply transformation # Plot Original and Transformed Square plt.figure(figsize=(8, 4)) # Original Square plt.subplot(1, 2, 1) plt.plot(square[0], square[1], 'o-', color='blue') plt.title('Original Square') plt.xlim(-1, 3) plt.ylim(-1, 3) plt.axhline(0, color='grey', linewidth=0.5) plt.axvline(0, color='grey', linewidth=0.5) plt.grid(True) # Transformed Square plt.subplot(1, 2, 2) plt.plot(transformed_square[0], transformed_square[1], 'o-', color='red') plt.title('Transformed Square') plt.xlim(-1, 4) plt.ylim(-1, 4) plt.axhline(0, color='grey', linewidth=0.5) plt.axvline(0, color='grey', linewidth=0.5) plt.grid(True) plt.show()

 逆矩阵(Inverse Matrix)和奇异矩阵(Singular Matrix)

矩阵乘以其逆矩阵得到单位矩阵。 Python中计算逆矩阵(Inverse Matrix))的示例: import numpy as np # 定义原始矩阵 A A = np.array([[1, 2], [3, 4]]) # 计算矩阵 A 的逆矩阵 A_inv = np.linalg.inv(A) print("Original matrix:") print(A) print("Inverse matrix:") print(A_inv) 奇异矩阵是一个方阵,它没有逆矩阵。 换句话说,这意味着矩阵的行列式为零。 Python中计算奇异矩阵(Singular Matrix)的示例: # Singular Matrix A = np.array([[1, 2], [2, 4]]) # This matrix is singular try: np.linalg.inv(A) except np.linalg.LinAlgError: print("Matrix is singular, cannot find its inverse.")

 单位矩阵(Identity matrix)

单位矩阵是一个方阵,对角线上的元素为1,其它位置的元素为0。 在矩阵乘法中,单位矩阵充当乘法的单位元,任何矩阵与单位矩阵相乘都会保持不变,类似于数字1的作用。 Python中计算单位矩阵(Identity matrix)的示例: import numpy as np # Generate an identity matrix size = 4 # Specify the size of the identity matrix identity_matrix = np.eye(size) print(identity_matrix)

 对角矩阵(Diagonal Matrix)

对角矩阵是一个方阵,除了主对角线上的元素外,所有其他位置的元素均为零。 它在求解特征值和计算行列式时经常被使用。 Python中计算对角矩阵(Diagonal Matrix)的示例: # Diagonal Matrix D = np.diag([1, 2, 3]) print(D)

 正交矩阵(Orthogonal matrix)

对于实数元素的方阵,如果它的转置等于其逆矩阵,则被称为正交矩阵。 严格地说,矩阵 A 是正交的,如果满足 AᵀA = AAᵀ = I,其中 I 是单位矩阵。 从几何上看,一个矩阵是正交的,如果它的列向量和行向量是正交的单位向量,也就是说它们彼此垂直且大小为1。

 矩阵乘法(Matrix multiplication)

矩阵乘法是线性代数中一项基础而重要的运算,用于将一个矩阵与另一个矩阵相乘,得到一个新的矩阵。 在进行矩阵乘法时,第一个矩阵的列数必须等于第二个矩阵的行数,结果矩阵的维度由这两个矩阵的行数和列数决定。 Python中计算矩阵乘法的示例: import matplotlib.pyplot as plt import numpy as np # Original square defined by its corners square = np.array([[0, 1, 1, 0, 0], [0, 0, 1, 1, 0]]) # Matrices A and B A = np.array([[1, 2], [3, 4]]) B = np.array([[2, 0], [0, 2]]) # Apply matrix A and B transformations transformed_square_A = np.dot(A, square) transformed_square_B = np.dot(B, square) # Apply matrix A then B transformation (A x B) transformed_square_AB = np.dot(A, transformed_square_B) # Plotting fig, ax = plt.subplots(1, 4, figsize=(20, 5)) # Original Square ax[0].plot(square[0], square[1], 'o-', color='grey') ax[0].set_title('Original Square') ax[0].set_xlim(-1, 5) ax[0].set_ylim(-1, 5) # Square after applying matrix A ax[1].plot(transformed_square_A[0], transformed_square_A[1], 'o-', color='red') ax[1].set_title('After applying A') ax[1].set_xlim(-1, 10) ax[1].set_ylim(-1, 10) # Square after applying matrix B ax[2].plot(transformed_square_B[0], transformed_square_B[1], 'o-', color='blue') ax[2].set_title('After applying B') ax[2].set_xlim(-1, 5) ax[2].set_ylim(-1, 5) # Square after applying matrix A then B ax[3].plot(transformed_square_AB[0], transformed_square_AB[1], 'o-', color='green') ax[3].set_title('After applying A x B') ax[3].set_xlim(-1, 15) ax[3].set_ylim(-1, 15) plt.show()

 迹(Trace)

矩阵的迹是其所有对角元素的和。 它在基底变换下保持不变,并提供关于矩阵的有价值的信息,即迹是矩阵特征值的和。 Python中计算迹(Trace)的示例: # Trace of a Matrix A = np.array([[1, 2], [3, 4]]) trace_A = np.trace(A) print("Trace of A:", trace_A)

 行列式 (Determinant)

行列式是一个与方阵的元素相关的标量值。 一个矩阵 A 的行列式通常表示为 det(A), det A 或 |A|。 其值描述了矩阵及其所代表的线性映射在给定基础下的某些特性。 特别地,当且仅当矩阵可逆且相应的线性映射是同构映射时,行列式不为零。 矩阵乘积的行列式等于各个矩阵的行列式的乘积。 2×2矩阵的行列式: 3×3矩阵的行列式: Python中计算行列式的示例: A = np.array([[1, 2], [3, 4]]) det_A = np.linalg.det(A) print("Determinant of A:", round(det_A, 2))

 秩(Rank)

矩阵中线性无关的最大列向量或行向量的数量。 它表示由其行或列张成的向量空间的维数。 秩也告诉我们线性变换后输出的维度数量。 当一个变换的输出是一条直线(即一维空间)时,我们称该变换的秩为1。 如果所有向量都落在某个二维平面上,我们称该变换的秩为2。 对于一个2x2矩阵,秩为2是最佳的情况,称为满秩。 这意味着基向量可以张成整个二维空间,并且行列式非零。 但对于3x3矩阵,秩为2意味着它有所退化,但不像秩为1那样严重。 import numpy as np # Rank 1 Matrix A_rank1 = np.array([[1, 2], [1, 2]]) # Rank 2 Matrix A_rank2 = np.array([[1, 2], [3, 4]]) # Rank 3 Matrix (must be at least 3x3) A_rank3 = np.array([[1, 0, 2], [0, 1, 3], [1, 1, 5]]) matrices = [A_rank1, A_rank2, A_rank3] for matrix in matrices: print_matrix(matrix) print(f"Rank: {np.linalg.matrix_rank(matrix)}\n")

 特征向量和特征值(Eigenvectors and Eigenvalues)

特征向量和特征值代表了变换的“轴”。 特征向量是在线性变换后方向不改变的输入向量。 虽然方向不变,大小可能会发生变化。 这种大小变化,即特征向量被放大或缩小的程度,称为特征值。 下面是一个特征向量的可视化示例。 对于一个矩阵 A 和一个向量 v,如果 Av = λv,则 λ 是一个特征值,v 是矩阵 A 的一个特征向量。 下面是特征值和特征向量分解的示例: import numpy as np import matplotlib.pyplot as plt # Eigenvectors and Eigenvalues A = np.array([[1, 2], [2, 3]]) eigenvalues, eigenvectors = np.linalg.eig(A) print(A) print(eigenvalues) print(eigenvectors) fig, ax = plt.subplots() origin = [0, 0] for i in range(len(eigenvalues)): ax.quiver(*origin, eigenvectors[0, i], eigenvectors[1, i], scale=3, scale_units='xy', angles='xy') ax.set_xlim(-1, 1),ax.set_ylim(-1, 1) ax.set_aspect('equal') ax.grid(True) ax.set_title('Eigenvectors of A') plt.show() 线性代数是数据科学和机器学习的基础,通过向量、矩阵和线性变换描述数据及其关系。 它支持数据表示、降维、优化和特征工程等任务。 例如,矩阵组织数据,PCA减少维度,梯度下降优化模型。 线性代数还在推荐系统和相似度测量中应用向量嵌入。 它是理解和解决数学和工程问题的关键工具,将理论模型转化为实际应用。

矩阵计算的几何意义

一、二维矩阵与平面几何
 1.1 旋转矩阵:圆的指挥
 1.2 缩放矩阵:大小
 1.3 平移矩阵:位置
二、三维矩阵立体世界
 2.1 旋转矩阵多样性
 2.2 仿射变换与投影变换
三、矩阵计算的几何直观性
四、矩阵计算的深层几何意义
 4.1 变换的连续性与平滑性
 4.2 坐标系的转换
 4.3 线性空间的映射
五、矩阵计算在实际应用中的几何光芒
 5.1 计算机图形学
 5.2 机器人学
 5.3 工程学
矩阵,简而言之,是一个按照长方阵列排列的复数或实数集合。 然而,这简单的定义背后隐藏着惊人的力量——它能够将复杂的几何变换以一种简洁而统一的方式表示出来。 无论是平移、旋转、缩放还是更复杂的仿射变换,甚至是投影和透视变换,矩阵都能以数学语言精准描述,使得这些变换在计算机中得以高效实现。

一、二维矩阵与平面几何

 1.1 旋转矩阵:圆的指挥

在二维平面上,旋转是最直观也最具代表性的几何变换之一。 通过旋转矩阵,我们可以轻松实现点或图形的旋转。 设某点(x, y)绕原点顺时针旋转θ角度后的新坐标为(x', y'),则旋转矩阵为: 将点(x, y)表示为列向量,与旋转矩阵相乘即得到旋转后的坐标:

 1.2 缩放矩阵:大小

缩放变换同样简单直接,通过改变坐标轴上的比例因子来实现。 沿x轴和y轴分别缩放kx和ky倍的缩放矩阵为: 与点(x, y)的列向量相乘,即可得到缩放后的坐标。 缩放矩阵就像是掌握着物体大小的魔术师,轻轻一挥,便能让图形在尺寸上随心所欲地变化。

 1.3 平移矩阵:位置

值得注意的是,在标准的二维线性变换中,平移并不直接由矩阵乘法实现(因为平移不是线性变换),但可以通过引入齐次坐标(即在二维坐标后添加一个恒为1的维度)来构造平移矩阵。 平移矩阵形如: 这里,tx和ty分别是沿x轴和y轴的平移量。 通过齐次坐标,平移变换也得以融入矩阵变换的大家庭,成为几何变换的得力助手。

二、三维矩阵立体世界

当矩阵的维度扩展至三维时,其几何意义变得更加丰富和复杂。 三维空间中的点(x, y, z)通过三维矩阵可以实现旋转、缩放、平移乃至更复杂的变换,如斜切、镜像等。

 2.1 旋转矩阵多样性

在三维空间中,旋转可以围绕任意轴进行,这使得旋转矩阵的构造变得复杂。 常见的做法是先通过一系列基本旋转(如绕x轴、y轴或z轴旋转)的复合来实现任意轴的旋转。 每个基本旋转都可以用一个3x3的矩阵表示,而复合旋转则是这些矩阵的乘积。

 2.2 仿射变换与投影变换

仿射变换是线性变换与平移的组合,它在三维图形学中尤为重要,用于实现视角变换、物体定位等。 而投影变换则更进一步,它模拟了光线通过特定角度照射到物体上并在平面上形成影像的过程,是计算机图形渲染的基础。 投影矩阵能够将三维空间中的点映射到二维屏幕上,是实现3D到2D转换的关键。

三、矩阵计算的几何直观性

矩阵计算之所以在几何变换中如此重要,很大程度上归功于其直观性。 通过矩阵,我们可以将复杂的几何变换分解为一系列简单的线性操作(如旋转、缩放)和非线性操作(如平移,通过齐次坐标实现),这些操作可以像搭积木一样组合起来,形成任意复杂的变换。 这种模块化和组合性的特性,不仅简化了变换的表示,也极大地提高了变换的计算效率和可重用性。

四、矩阵计算的深层几何意义

 4.1 变换的连续性与平滑性

矩阵计算不仅限于静态的几何变换,它还能描述变换的连续性和平滑性。 通过参数化矩阵中的元素,我们可以创建随时间变化的变换序列,如动画中的物体运动轨迹。 这种连续性和平滑性在动画、游戏开发、虚拟现实等领域至关重要,它使得虚拟世界中的物体运动更加自然和逼真。

 4.2 坐标系的转换

矩阵还可以用于坐标系的转换。 在不同的应用场景中,我们可能需要从一个坐标系转换到另一个坐标系来观察或计算物体。 例如,在机器人学中,机器人手臂的末端执行器需要在不同的参考坐标系下进行定位和定向。 通过构建适当的变换矩阵,我们可以轻松实现不同坐标系之间的转换,从而简化问题的求解过程。

 4.3 线性空间的映射

从更抽象的角度来看,矩阵计算实际上是在进行线性空间之间的映射。 线性空间是数学中的一个基本概念,它包含了一系列的向量以及这些向量之间的线性运算。 矩阵可以看作是从一个线性空间到另一个线性空间的线性映射的表示。 通过矩阵的乘法运算,我们可以将一个线性空间中的向量映射到另一个线性空间中的新向量,这种映射保持了向量的线性关系不变。

五、矩阵计算在实际应用中的几何光芒

 5.1 计算机图形学

计算机图形学是矩阵计算几何意义最直观的体现之一。 在图形渲染过程中,无论是模型的变换、视图的设置还是光照的计算,都离不开矩阵的参与。 通过矩阵,我们可以轻松实现物体的旋转、缩放、平移以及摄像机视角的调整等变换操作,从而生成逼真的三维图像和动画效果。

 5.2 机器人学

在机器人学中,矩阵计算被广泛应用于机器人的运动规划和控制中。 机器人手臂的运动可以看作是一系列关节角度的变化过程,这些变化可以通过矩阵变换来描述和计算。 通过构建机器人手臂的正运动学模型(即关节角度到末端执行器位置的映射),我们可以利用矩阵计算来求解机器人手臂在给定关节角度下的末端执行器位置;反之,通过逆运动学计算,我们可以求解出达到特定末端执行器位置所需的关节角度。

 5.3 工程学

在工程领域,矩阵计算同样发挥着重要作用。 例如,在结构力学中,我们可以通过建立结构的刚度矩阵和质量矩阵来求解结构的动力响应问题;在控制理论中,状态空间表示法利用矩阵来描述系统的动态特性,并通过矩阵运算来设计控制器以实现系统的稳定控制。

Matrix

Matrices basics Multiply Matrices Inverse of a Matrix Determinant of a Matrix